(1.1.2) Modeling and abstraction
I use the words "modeling" and "abstraction" in the same meaning. The words "pattern discovery" is also strongly related to the concept. The abstraction is an important concept. However, the concept is itself abstract. I am worried that you will be confused. In (1.4) What is abstraction?, I explain the concept more in detail. When you start to abstract, you stack new boxes one by one on top of the boxes collected during information gathering. You can’t put a box in the air without a supporting foundation. So, by using the boxes gathered as the foundation, by piling up one by one on top, gradually aim for height. In this metaphor, concrete information are at the bottom, whereas abstraction increases by height. If you try to put a box in the air without a foundation, it will fall. Similarly, abstract ideas need a foundation consisting of concrete knowledge. It corresponds that if you try to learn abstract concepts without concrete information, you just remember the sentence as concrete information. The fallen box does not have support. You can not tell concrete examples for the literal memory.
https://gyazo.com/7fdd2f2df3f91c1b53cb211486237985
Fig: Modeling and abstraction
Left: You can't place a box in the air.
Right: You need a foundation first.
The boxes to be stacked on are not limited to those collected. By looking at the collected information, you often find a pattern. The pattern is a new box. I call the activity "pattern discovery" in (0.2.2) Compare and find patterns. I also call it "modeling" because it is an activity to make a model. Model is a box to be stacked on. To create a new box to stack is to create more abstract information from concrete information. So I also call it "abstraction." For example, consider the concepts written in a book.
Before writing a book, the author has various concrete experiences. However, the author can't write all experiences in the book. So, most of the concrete information is gone in the process of writing a book. The author makes an effort to provide concrete examples to support abstract concepts. It is an effort to provide foundational boxes. However the author doesn’t know what boxes you have, so sometimes the supporting boxes aren’t adequate. In which case, you need to create a missing box by yourself.
https://gyazo.com/ab95464e1ed246181daf2da6c1e72a4c
Fig: Modeling: collect information, think, put on the top
The boxes may collapse while being stacked. Exact knowledge, such as maths provides square blocks. In mathematics, you can stack blocks with precision, and you can make a very high tower. That is, you can reach knowledge with a high level of abstraction. On the other hand, the "boxes" in other fields are irregular to varying degrees. Trying to accumulate these in the same way as mathematics causes collapse. Therefore, it is necessary to gather a lot of information, support it with many boxes, and stack it like a pyramid.
https://gyazo.com/13e7a978f7914aba9f9e8b1f9e23e353
Fig: In mathematics, you can stack boxes perfectly, but in other areas, you can not.
Let’s look at a concrete example of information gathering.
---
code:Example of a list
---
code:Example of a tuple
(1, 2, 3)
---
Now you have two units of new information. You got two boxes by information gathering and you have put them on the floor.
You would have thought that these two were similar. Human creates programming languages for specific purposes. So even though lists and tuples are similar, they are for different purposes.
Suppose you are interested in the difference. Now you have a question, "what is the difference?" This question works as a driving force of learning. Driven by this force, you may query the difference between lists and tuples on a search engine. Or you replace a list in the program with tuples, run the program and observe the result (*1). These activities provide you with new information. During collecting information, you will eventually create a new box and placing it on top of those boxes.
Footnote (*1): You may see AttributeError: 'tuple' object has no attribute 'append' and TypeError: unhashable type: 'list'. You may want to query those messages on a search engine.